在做即时通讯项目时,除了发送必要的文本消息外,还有语音, 图片,地图定位等多种消息类型,其中其他几种都是比较好处理的,但是针对图片处理的时候又有多图同时发以及单图发送。在图片发送中涉及到一下几点问题:

1. 单图发送

发送单张图片时就没有什么好说的,和发送文本消息一样,直接发送即可

2. 多图发送

  1. 需要按照选择的顺序进行发送

  2. 图片发送到对方终端接收的顺序也必须是一样的

解决办法

问题1:
在选择多图时, 每次选择都会其进行排序,因为用户的操作是无法预知的。用户可以选择后再取消; 选择多张后,再取消前面的几张等等,所以需要实时的对用户的操作进行排序, 但是无论用户怎么操作,在最后点击发送按钮之时,__需要按照当前的图片顺序进行发送__

问题2:
在发送消息时, 虽然内部可以采用的是Socket进行发送,但是由于图片大小以及网络环境等等因素的影响,消息的到达时间并不一定是我们预期的那样按照顺序依次到达的,所以就不能按照到达时间依次显示

由问题2解决办法引出的新问题-----如何在消息到到后按照既定规则显示
  1. 在接收方处理

     在所有的消息接收完毕后,针对发送时间,或者在消息体中自定义的标识符按照之前发送方的发送顺序进行排序后显示 
  2. 在发送方处理

    在消息发送时,采用递归算法进行依次发送,这样保证发送顺序又能保证接收顺序  
    

总结

推荐采用递归的方式发送消息, 不需要再做额外的处理等工作


小呀小魂淡
205 声望5 粉丝

个人开源知识库